<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        /**
         * @param {number} num
         * @return {string}
         * 
         * 通常情况下，罗马数字中小的数字在大的数字的右边。
         * 但也存在特例，例如 4 不写做 IIII，而是 IV。
         * 数字 1 在数字 5 的左边，所表示的数等于大数 5 减小数 1 得到的数值 4 。
         * 同样地，数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况：
         * I 可以放在 V (5) 和 X (10) 的左边，来表示 4 和 9。
         * X 可以放在 L (50) 和 C (100) 的左边，来表示 40 和 90。 
         * C 可以放在 D (500) 和 M (1000) 的左边，来表示 400 和 900。
         */
        var intToRoman = function (num) {
            let thousands = ['', 'M', 'MM', 'MMM'],
                hundreds = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],
                tens = ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
                bits = ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];
            thousand = parseInt(num / 1000)
            hundred = parseInt((num % 1000) / 100)
            ten = parseInt((num % 100) / 10)
            bit = num % 10
            console.log(thousand,hundred,ten,bit);
            return thousands[thousand] + hundreds[hundred] + tens[ten] + bits[bit]
        };
        console.log(intToRoman(3999));
    </script>
</body>

</html>